#include <iostream>

using std::cout;
using std::endl;

//C语言是不支持函数重载，但是C++是支持函数重载的

//单纯的只有函数的返回类型不一样，但是函数的名字与参数列表一样
//这样不能构成函数重载，这样会冲突
//
//原理:对函数做了名字改编（name manging）
//步骤：当函数名字一样的，会按照参数列表不一样进行改名，根据
//参数的个数、类型、顺序进行改编
int add(int x, int y)
{
    return x + y;
}

/* long add(int x, int y) */
/* { */
/*     return x + y; */
/* } */

long add(long x, long y)
{
    return x + y;
}

int add(int x, long y)
{
    return x + y;
}

int add(long x, int y)
{
    return x + y;
}

int add(int x, int y, int z)
{
    return x + y + z;
}

void test()
{

}

int main(int argc, char *argv[])
{
    test();
    return 0;
}

